home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d1
/
marxmenu.arc
/
LOGIN.MNU
< prev
next >
Wrap
Text File
|
1991-03-27
|
13KB
|
541 lines
Comment
========================================================
Copyright 1990 by Marc Perkel * All right reserved.
Requires MarxMenu version 2.14 or later to run.
MarxMenu now allows you to login to a Novell network without using
Novell's login program or messing with nasty login scripts. You can
be in MarxMenu all the way in.
Logging into Novell is tricky. Especially if you are using boot roms
on your network cards. Through much trial and error, I have found
some solid tricks that make life easier.
You should have the following two BATCH files in your LOGIN
directory as follows:
LOADNET.BAT
-----------
NET4
F:
STARTUP
STARTUP.BAT
-----------
SET BOOTUP=LOGIN
MarxMenu Login
%BOOTUP%
Each workstation should have their own AUTOEXEC.BAT. The last line
should be LOADNET. If you are running multiple versions of dos you
can have the first line of LOADNET.BAT be %NET%. You will then have
to have SET NET=NET4 in your AUTOEXEC.BAT file.
Also, if you want automatic login you can add the following lines:
SET USERNAME=MARC Your Name Here
SET PASSWORD=NERD Your Password Here
You should also change the COMSPEC= to the network command.com BEFORE
you run NET4. For some unknown reason, this solves a lot of problems.
Example:
IPX
SET COMSPEC=Y:COMMAMD.COM
NET4
Another boot rom quirk is that you can't run any program off a boot
rom that trashes upper memory. An example is running QEMM on a
monochrome monitor.
By using this method the boot disk or boot rom hands control over in
a clean way. LOADNET.BAT then branches to STARTUP.BAT for the rest
of the login sequence.
For some strange reason which I can't explain, LOADNET and STARTUP
have to be two separate batch files. I think it forces the transient
part of COMMAND.COM to load into memory. Anyhow, don't combine these
into one batch file
The first line of STARTUP.BAT is a message that tells this menu that
the user is logging in for the first time. This menu creates a batch
file and puts the name of it in the environment variable BOOTUP.
STARTUP.BAT then executes this file.
This is the example for MY network. You'll have to modify it for
yours.
One word of caution. After modifing this menu, always run MARXCOMP
LOGIN to compile it. Otherwise, if you boot up into it you won't
have enough access rights to recompile automatically.
========================================================
EndComment
var
UserName
PassW
Logged
Station
NetAddress
SmartDir
MyServer
Servers
HomeDir
DosDir
BatFile
BatName
FancyScreen
Shell
;----- All environment string access will be the Master Environment
MasterEnvironment
Shell = CleanFileName(ReadEnv('COMSPEC'))
Comment
========================================================
If Environment variables USERNAME and PASSWORD are set, this menu
will attempt to log into the network using these values. This allows
for automatic login. You can also pass the parameters on the command
line as follows.
MarxMenu Login <Name> <Password>
The name may contain a referrence to a server: Server/Name
========================================================
EndComment
;------ If CapsLock key is on then override default login
Logged = False
if not CapsLock
UserName = ParamStr(2)
if UserName = '' then UserName = ReadEnv('USERNAME')
if UserName > ''
PassW = ParamStr(3)
if PassW = '' then PassW = ReadEnv('PASSWORD')
if PassW > ''
NovLogin (UserName,PassW)
Logged = NovResult = 0
endif
endif
endif
MyServer = NovDefaultServer
NovServers(Servers)
;------ Fills station to 3 digits. Example: 004
Station = Str(NovConnection)
while length(Station) < 3
Station = '0' + Station
endwhile
;------ Read network address
NetAddress = NovStationAddress (NovConnection)
;------ Select colors and prepare screen
if not Logged
FancyScreen = True
if ColorScreen
TextColor White Red
BoxBorderColor Green Brown
BoxInsideColor Black Brown
ClearScreen 176
ClockColor Black Brown
TextColor Black Green
BoxHeaderColor Yellow Mag
Shadow
else
TextColor Grey Black
ClearScreen 176
TextColor Black Grey
BoxBorderColor Black Grey
BoxInsideColor Black Grey
BoxHeaderColor Black Grey
ClockColor Black Grey
endif
BlankMessage = 'Netware Login'
ClockMode = 262
GotoXY 1 25
ClearLine
WriteCenter "Computer Tyme Master Network Login Menu"
SingleLineBox
Explode Off
ShadowColor Grey Red
if ColorScreen
DrawBox 3 2 74 5
ClockPos 42 5
TextColor Blue Brown
else
DrawBox 3 2 76 5
ClockPos 44 5
endif
WriteCenter 'Computer Tyme Software Development Laboratory'
Writeln
TextColor Black Brown
WriteCenter '───────────────────────────────────────────────────────'
Writeln
TextColor Black Brown
Write " (C) 1990 by Marc Perkel"
DoubleLineBox
BlankTime = 10
Explode On
BlockBox
BoxBorderColor Green Blue
BoxInsideColor Yellow Blue
BoxHeader = " Station Information "
if ColorScreen
DrawBox 39 17 38 6
TextColor Yellow Blue
else
DrawBox 41 17 38 6
TextColor Grey Black
endif
Writeln ' Server: ' MyServer
Writeln ' Network: ' NetAddress
Writeln ' Connection: ' Station
Write ' DOS Version: ' DosVersionString
BoxHeader = ' Logging into Server * ' + MyServer + ' '
DrawBox 3 10 50 4
endif
Security
while not Logged
if UserName = ''
ClearScreen
Write ' Login Name: '
UserName = UpperCase(Readln)
Writeln
if UserName = 'EXIT' then ExitMenu
endif
if not Logged
Write ' Password: '
PassW = Readln
NovLogin (UserName,PassW)
Logged = NovResult = 0
endif
if not Logged then UserName = ''
endwhile
if FancyScreen
EraseTopWindow
EraseTopWindow
EraseTopWindow
EraseTopWindow
TextColor Grey Black
ClearScreen
endif
UserName = NovMyLoginName
Comment
========================================================
Here we set a different directory for a program depending on if we
have a color or monochrome monitor.
========================================================
EndComment
if VideoMode = Mono
SmartDir = 'F:\PUBLIC\MSMART'
else
SmartDir = 'F:\PUBLIC\CSMART'
endif
;----- You can't assume that you have an F: drive unless you map it.
NovMapDrive ('F','SYS:\LOGIN')
;----- Here we calculate a home directory for each user.
HomeDir = 'F:\HOME\' + UserName
if UserName = 'SUPERVISOR' then HomeDir = 'F:\SYSTEM'
if not ExistDir(HomeDir) then HomeDir = 'F:\PUBLIC\APPS'
Comment
========================================================
Here we calulate the the name of the dos directory that matches the
version of dos we are running.
========================================================
EndComment
DosDir = 'F:\PUBLIC\DOSV' + DosVersionString
Comment
========================================================
Here's where we map our drives. This does not set the search path.
You set that explicitly by writing to the PATH environment variable.
Drive map commands may contain server and volume referrences:
MovMapDrive('I','TYME/VOL1:SERVICE')
========================================================
EndComment
NovMapDrive ('Z',HomeDir)
NovMapDrive ('Y','F:\PUBLIC\APPS')
NovMapDrive ('X',DosDir)
NovMapDrive ('W','F:\PUBLIC\UTIL')
NovMapDrive ('P','F:\PUBLIC')
NovMapDrive ('U','F:\SYSTEM')
NovMapDrive ('L','F:\LOGIN')
if MyServer = 'TYME'
NovMapDrive ('I','VOL1:')
endif
if (MyServer = 'TYME') or (MyServer = 'MARX')
NovMapDrive ('S',SmartDir)
endif
;Here's where we set master environment variable strings
SetEnv ('PASSWORD=')
SetEnv ('NET=')
SetEnv ('USERNAME=' + UserName)
SetEnv ('STATION=' + Station)
if Shell <> 'C:\COMMAND.COM' then SetEnv ('COMSPEC=X:COMMAND.COM')
SetEnv ('PROMPT=$e[1;33m$p: $e[0;32m')
SetEnv ('PD.EXE=/$Z:PD.PIC')
SetEnv ('MXCTL=/C')
SetEnv ('MXECHO=OFF')
if MyServer = 'MARX2'
SetEnv ('PATH=Z:.;Y:.;X:.;W:.;P:.;U:.;M:.;')
else
SetEnv ('PATH=Z:.;Y:.;X:.;W:.;P:.;U:.;S:.;')
endif
FixPath ;Verifies all search paths exist
ChDir (HomeDir)
;------ Opens a semaphore that XMETER can read.
NovOpenSemaphore ('XM-LOGIN',0)
;------ LOGIN is set to BOOTUP if logging in for the first time
if UpperCase(ReadEnv('BOOTUP')) <> 'LOGIN' then ExitMenu
Comment
========================================================
In order to load TSRs, MarxMenu writes a temporary batch file and
exits. The STARTUP.BAT file then jumps to this batch file.
========================================================
EndComment
;------ Create temporary batch file for rest of login sequence
BatName = 'Z:$MRX' + Station + '.BAT'
SetEnv ('BOOTUP=' + BATNAME)
FileAssign(BatFile,BatName)
FileCreate(BatFile)
if DosVersionString < '3.30'
WriteBat('ECHO OFF')
else
WriteBat('@ECHO OFF')
endif
WriteBat ('SET BOOTUP=')
WriteBat ('MARK > NUL')
;----- Load Lan Assist
if NovInGroup ('LANASSIST')
WriteBat ('P:LA\LA +N >NUL')
endif
Comment
================================================================
This next section deals with running special programs bases on the
physical station number rather than by user. This deals with special
hardware that needs software drivers loaded.
================================================================
EndComment
;----- CD ROM Machine
;if NetAddress = '255:2'
; WriteBat ('CD\PUBLIC\MA')
; WriteBat ('MSCDEX.EXE /D:MSCD003 /M:12')
; WriteBat ('MAR C:\ RW=/ /C')
;endif
;----- Vicki's Printer
if NetAddress = '255:65'
WriteBat('P:PA\PA P=1 M=200 T=10 Q1=TYME/VICKI')
Capture('VICKI',1)
endif
;----- Grace's Printer
if NetAddress = '255:68'
WriteBat('P:PA\PA P=1 M=200 T=10 Q1=TYME/GRACE')
Capture('GRACE',1)
endif
;----- Nita's Printer
if NetAddress = '255:E8'
WriteBat('P:PA\PA P=1 M=200 T=10 Q1=TYME/NITA')
Capture('NITA',1)
endif
Comment
================================================================
This next section deals with running special programs bases on the
users preferrences.
================================================================
EndComment
if UserName = 'MARC'
WriteBat('KBD 6 NumOff');
Capture('DOT',1)
Capture('LASER',2)
ChDir('TP6')
if MyServer = 'MARX'
SetEnv ('PATH=C:\TP6;C:\;' + ReadEnv('PATH'))
ChDir('C:\TP6')
endif
endif
if UserName = 'VICKI'
Capture('LASER',2)
WriteBat('KBD 6 NumOn CR');
WriteBat('MAP ROOT C:=Z:')
WriteBat('MOUSE')
endif
if UserName = 'KEVIN'
WriteBat('KBD 0,0 NumOn');
Capture('LASER',1)
Capture('DOT',2)
SetEnv('PROMPT=[$p]')
ChDir('MARX')
endif
if UserName = '386'
WriteBat('KBD 6 NumOff');
Capture('DOT',1)
Capture('LASER',2)
endif
if UserName = 'TBBS'
Capture('DOT',1)
Capture('LASER',2)
ChDir('I:\BBS\TBBS')
NovMapDrive('H','I:')
SetEnv('D.EXE=/O/I')
WriteBat('CASTOFF')
WriteBat('DROPTO ' + BatName + ' R')
endif
if UserName = 'GRACE'
WriteBat('KBD 6 NumOn');
Capture('LASER',2)
endif
if UserName = 'NITA'
WriteBat('KBD 6 NumOn CapsOn');
Capture('LASER',2)
endif
if UserName = 'WORK'
WriteBat('KBD 6 NumOff');
Capture('DOT',1)
Capture('LASER',2)
endif
;----- Loads SideKick for all users in L:SIDEKICK.LST
ReadSideKickList
Comment
================================================================
The batch file ends by jumping to personal menu, if there is one, or
the default menu if there isn't. DROPTO.BAT is used to erase the
temporary batch file that this menu creates.
================================================================
EndComment
WriteBat ('DROPTO ' + BatName + ' MARX TYME')
FileClose(BatFile)
ExitMenu
;----- Procedure Definitions
Procedure WriteBat (BatLine)
FileWriteln(BatFile,BatLine)
EndProc
Procedure Pause
WriteBat ('PAUSE')
EndProc
Procedure Capture (Queue, PrinterPort)
var PortSt
PortSt = Str(PrinterPort)
WriteBat ('P:CAPTURE Q=' + Queue + ' C=1 NB NFF TI=5 L=' + PortSt + '>NUL')
EndProc
Comment
========================================================
A list is created in the \LOGIN directory containing the names of
users who want to load sidekick. The name of the file is SIDEKICK.LST
and looks like:
MARC
VICKI
GRACE
========================================================
EndComment
Procedure ReadSidekickList
var SkList X Found
ReadTextFile ('L:SIDEKICK.LST',SkList)
X = 1
Found = False
while not Found and (X <= NumberOfElements (SkList))
if UpperCase(SkList[X]) = UserName
WriteBat('KBD CR');
WriteBat ('SWAPSK/N/G/D' + HomeDir + ' >NUL')
WriteBat ('SK')
WriteBat ('CLS')
Found = True
Endif
X = X + 1
EndWhile
EndProc